/**
 * 项目统一配置文件
 * 管理所有API端点、WebSocket连接和其他环境相关配置
 */

// 环境检测
const isDevelopment = process.env.NODE_ENV === 'development';
const isProduction = process.env.NODE_ENV === 'production';

// 开发环境配置
const DEVELOPMENT_CONFIG = {
  // 服务器配置
  API_HOST: 'localhost',
  API_PORT: 8081,
  CLIENT_HOST: 'localhost',
  CLIENT_PORT: 8080,
  
  // WebSocket配置
  WS_PROTOCOL: 'ws',
  WS_HOST: 'localhost',
  WS_PORT: 8081,
  
  // 日志配置
  ENABLE_CONSOLE_LOGS: false, // 生产环境关闭console日志
  ENABLE_ERROR_LOGS: true,    // 错误日志始终开启
  ENABLE_DEBUG_LOGS: false,   // 调试日志仅开发环境
};

// 生产环境配置
const PRODUCTION_CONFIG = {
  // 服务器配置
  API_HOST: 'your-domain.com',
  API_PORT: 443,
  CLIENT_HOST: 'your-domain.com',
  CLIENT_PORT: 443,
  
  // WebSocket配置
  WS_PROTOCOL: 'wss',
  WS_HOST: 'your-domain.com',
  WS_PORT: 443,
  
  // 日志配置
  ENABLE_CONSOLE_LOGS: false, // 生产环境关闭console日志
  ENABLE_ERROR_LOGS: true,    // 错误日志始终开启
  ENABLE_DEBUG_LOGS: false,   // 调试日志关闭
};

// 根据环境选择配置
const CONFIG = isDevelopment ? DEVELOPMENT_CONFIG : PRODUCTION_CONFIG;

// 构建完整URL的辅助函数
const buildApiUrl = (path = '') => {
  const protocol = CONFIG.API_PORT === 443 ? 'https' : 'http';
  const port = (CONFIG.API_PORT === 80 || CONFIG.API_PORT === 443) ? '' : `:${CONFIG.API_PORT}`;
  return `${protocol}://${CONFIG.API_HOST}${port}/api${path}`;
};

const buildWebSocketUrl = (path = '') => {
  const port = (CONFIG.WS_PORT === 80 || CONFIG.WS_PORT === 443) ? '' : `:${CONFIG.WS_PORT}`;
  return `${CONFIG.WS_PROTOCOL}://${CONFIG.WS_HOST}${port}/${path}`;
};

const buildClientUrl = (path = '') => {
  const protocol = CONFIG.CLIENT_PORT === 443 ? 'https' : 'http';
  const port = (CONFIG.CLIENT_PORT === 80 || CONFIG.CLIENT_PORT === 443) ? '' : `:${CONFIG.CLIENT_PORT}`;
  return `${protocol}://${CONFIG.CLIENT_HOST}${port}${path}`;
};

// 日志工具函数
const logger = {
  log: (...args) => {
    if (CONFIG.ENABLE_CONSOLE_LOGS) {
      console.log(...args);
    }
  },
  
  info: (...args) => {
    if (CONFIG.ENABLE_CONSOLE_LOGS) {
      console.info(...args);
    }
  },
  
  warn: (...args) => {
    if (CONFIG.ENABLE_CONSOLE_LOGS) {
      console.warn(...args);
    }
  },
  
  error: (...args) => {
    if (CONFIG.ENABLE_ERROR_LOGS) {
      console.error(...args);
    }
  },
  
  debug: (...args) => {
    if (CONFIG.ENABLE_DEBUG_LOGS) {
      console.debug(...args);
    }
  }
};

// 导出配置
export {
  CONFIG,
  isDevelopment,
  isProduction,
  buildApiUrl,
  buildWebSocketUrl,
  buildClientUrl,
  logger
};

// 默认导出主要配置
export default {
  // API配置
  API_BASE_URL: buildApiUrl(),
  
  // WebSocket配置
  WS_URL: buildWebSocketUrl(),
  
  // 客户端配置
  CLIENT_URL: buildClientUrl(),
  
  // 完整配置对象
  ...CONFIG,
  
  // 工具函数
  buildApiUrl,
  buildWebSocketUrl,
  buildClientUrl,
  logger
};